草庐IT

带参数的Android drawable

全部标签

C语言实现 不使用第三个变量交换两个数的内容

不使用第三个变量交换两个数的内容使用C语言实现不使用第三个变量交换两个数的内容方法一:加减法inta=3;intb=5;a=a+b;b=a-b;a=a-b;a=3+5=8b=8-5=3a=8-3=5原理就是a+b-b得到的值赋给b;a+b-a得到的值赋给a但是使用加减法有一个问题:如果a和b的数字很大的时候,a+b有可能会溢出。方法二:使用异或a=a^b;b=a^b;a=a^b;a:00000000000000000000000000000011b:00000000000000000000000000001000a=a^b:00000000000000000000000000001011b=a

Verilog有符号数与无符号数的相互转化

Verilog有符号数与无符号数的相互转化最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下。问题描述一、正数二、负数1.-1282.-1结论三、延伸总结问题描述把8位有符号数(-128-127)转化为8位无符号数(255-0),转化到255-0是因为该DA模块输入数据越大反而输出电压越小。一、正数比较显然,直接用127减该数就可以。二、负数举两个例子:1.-128-128补码为1000_0000,用127-(-128),计算器计算为:用Verilog写个简单的模块仿真一下:modulesubtraction(inp

Verilog有符号数与无符号数的相互转化

Verilog有符号数与无符号数的相互转化最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下。问题描述一、正数二、负数1.-1282.-1结论三、延伸总结问题描述把8位有符号数(-128-127)转化为8位无符号数(255-0),转化到255-0是因为该DA模块输入数据越大反而输出电压越小。一、正数比较显然,直接用127减该数就可以。二、负数举两个例子:1.-128-128补码为1000_0000,用127-(-128),计算器计算为:用Verilog写个简单的模块仿真一下:modulesubtraction(inp

从近世代数的角度理解补码

介绍模数加法形成了一种数学结构,成为阿贝尔群(Abeliangroup),这是以丹麦数学家阿贝尔的名字命名的。前置知识定义1.设\(a,b\inZ\),如果存在\(q\inZ\)使得\(a=qb\),则称\(b\)整除\(a\),记为\(b|a\)。定义2.设\(a,b\inZ\),\(b>0\),\(a=qb+r\),\(q\inZ\),\(0\leqr,则称\(r\)为\(a\)除以\(b\)所得到的余数,记为\(a\bmodb\)。定义3.设\(a,b,n\inZ\),\(n>0\),如果\(a\bmodn=b\bmodn\),则称\(a\)与\(b\)模\(n\)同余,记为\(a\eq

从近世代数的角度理解补码

介绍模数加法形成了一种数学结构,成为阿贝尔群(Abeliangroup),这是以丹麦数学家阿贝尔的名字命名的。前置知识定义1.设\(a,b\inZ\),如果存在\(q\inZ\)使得\(a=qb\),则称\(b\)整除\(a\),记为\(b|a\)。定义2.设\(a,b\inZ\),\(b>0\),\(a=qb+r\),\(q\inZ\),\(0\leqr,则称\(r\)为\(a\)除以\(b\)所得到的余数,记为\(a\bmodb\)。定义3.设\(a,b,n\inZ\),\(n>0\),如果\(a\bmodn=b\bmodn\),则称\(a\)与\(b\)模\(n\)同余,记为\(a\eq

子网掩码、前缀长度、IP地址数的换算

子网掩码、前缀长度、IP地址数的换算子网掩码子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相同的IP地址,但掩码不一样,则指向的网络部分和主机部分不一样。子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据。如果相同,说明两台计算机在同一个子网中,可以直接通讯;按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节;子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示;子网掩码常用两种表示形式,一种是点分

子网掩码、前缀长度、IP地址数的换算

子网掩码、前缀长度、IP地址数的换算子网掩码子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相同的IP地址,但掩码不一样,则指向的网络部分和主机部分不一样。子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据。如果相同,说明两台计算机在同一个子网中,可以直接通讯;按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节;子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示;子网掩码常用两种表示形式,一种是点分

C++ 一种交换两个数的思路

在Lua或者Python中可以使用多值赋值语句来交换两个数。例如:a,b=b,a。在C++中有没有类似的操作?先解析一下多值赋值的原理,a,b=b,a等价于t1,t2=b,aa,b=t1,t2可以看到多值赋值还是用到了中间变量,而且还是两个。想到两个变量,可以联想到C++中的std::pair,可以用std::make_pair(b,a)构造中间变量,来完成上述第1条语句的功能。中间变量是std::pair类型。如何将std::pair的两个元素赋值给a和b?可以利用std::tie对std::pair进行unpack。示例代码如下:#include#includeintmain(){inta

C++ 一种交换两个数的思路

在Lua或者Python中可以使用多值赋值语句来交换两个数。例如:a,b=b,a。在C++中有没有类似的操作?先解析一下多值赋值的原理,a,b=b,a等价于t1,t2=b,aa,b=t1,t2可以看到多值赋值还是用到了中间变量,而且还是两个。想到两个变量,可以联想到C++中的std::pair,可以用std::make_pair(b,a)构造中间变量,来完成上述第1条语句的功能。中间变量是std::pair类型。如何将std::pair的两个元素赋值给a和b?可以利用std::tie对std::pair进行unpack。示例代码如下:#include#includeintmain(){inta

C++时间对秒数的运算

使用引用#includeusingnamespacestd;structTime{ inth; intm; ints;};voidtimeCompute(Time&t,intsec){ //引用作为形参 t.m=t.m+(t.s+sec)/60; //分钟的进位 t.s=(t.s+sec)%60;//秒数位计算后剩余的时间 t.h=t.h+t.m/60; //小时的进位 t.m=t.m%60;//分钟位计算后剩余的时间 t.h=t.h%24;//小时位取余实现24小时制}intmain(){ intrepeat,sec; //重复次数 cin>>repeat; structTimet;//创建